/*
 * @Author: xiaosihan
 * @Date: 2023-07-15 14:00:43
 * @Last Modified by: xiaosihan
 * @Last Modified time: 2024-07-29 23:17:05
 */

// 商品组
export type GoodsGroup = {
  goods_group_id: number;
  parent_id: number;
  sort: number;
  name: string;
  disable: number;
  activePng: string;
  hoverPng: string;
  normalPng: string;
  goods_number: number;
  on_goods: number;
};

export type GoodsData = {
  catalogueId: number;
  colors: Array<{
    [key: string]: string
  } & {
    color: `#${string}`, // 颜色值
    frontImg?: string // 颜色对应的衣服前片图片
    backImg?: string // 颜色对应的衣服后片图片
    cn: string; // 颜色中文
    en: string; // 颜色英文
  }>; // 商品可选颜色
  component: Array<
    {
      enable: boolean; // 是否上架
      lock: boolean; // 锁定
      key: string;
      icon: string; // 图标
      hover_icon: string; // 鼠标移入的图标
      name: string;
      cameraPosition?: { x: number; y: number; z: number }; // 相机的观察位置
      print_area_top: number; // 打印区域上面单位是mm
      print_area_left: number; // 打印区域左面单位是mm
      print_area_width: number; // 打印区域宽度单位是mm
      print_area_height: number; // 打印区域高度单位是mm

      clip_print_area_top: number; // 裁剪打印区域上面单位是mm
      clip_print_area_left: number; // 裁剪打印区域左面单位是mm
      clip_print_area_width: number; // 裁剪打印区域宽度单位是mm
      clip_print_area_height: number; // 裁剪打印区域高度单位是mm

      //小程序真机不能加载svg,所以需要提前准备这3张图片
      oulineMark: string; // 用于轮廓裁剪图
      designMark: string; // 用于设计裁剪图
      outlineDash: string; // 轮廓虚线图(带有裁剪区域的虚线图)
      printlineDash: string; // 打印区域虚线图

    } & {
      [key: string]: any; // 尺码轮廓
      // all_size: string; // 均码尺码轮廓
      // uv_3XS: string; // 3XS尺码轮廓
      // uv_2XS: string; // 2XS尺码轮廓
      // uv_XS: string; // XS尺码轮廓
      // uv_S: string; // S尺码轮廓
      // uv_M: string; // M尺码轮廓
      // uv_L: string; // L尺码轮廓
      // uv_XL: string; // XL尺码轮廓
      // uv_2XL: string; // 2XL尺码轮廓
      // uv_3XL: string; // 3XL尺码轮廓
      // uv_4XL: string; // 4XL尺码轮廓
      // uv_5XL: string; // 5XL尺码轮廓
      // uv_6XL: string; // 6XL尺码轮廓
    }
  >; // 部位的数据
  frontPrintFee: number; // 前面印刷费用
  backPrintFee: number; // 后面印刷费用
  createTime: any;
  detail: any;
  disable: number;
  fabricDoorWidth: string;
  fabricWeight: string;
  fillType: number; // 印刷方式 0,满版印刷, 1 局部印
  id: number;
  isDel: boolean;
  material: string;
  materialName: string;
  modalSize: string; // 模型的尺码
  mockupUrls: Array<string>; // 商品的上身效果
  miniProgramMockupUrls: Array<string>; ///这个模型是优化过并且没有压缩过的,微信小程序专用的
  modelUrl: string;//这个模型是压缩过的,用在pc端上的
  miniProgramModelUrl: string;//这个模型是优化过并且没有压缩过的,微信小程序专用的
  name: string;
  price: number;
  productCode: any;
  sex: string;
  size: Array<{
    enable: boolean; // 是否上架
    lock: boolean; // 锁定
    name: string;
    width: number;
    height: number;
    printLayout: any;
  }>; // 尺码的数据
  sizeInfo: { columns: Array<any>; dataSource: Array<any> }; //
  sizePrice: any;
  sku: string;
  sort: number;
  spu: string;
  styleNumber: string;
  suitFor: any;
  supplier: string;
  technology: string; // 二次工艺名称
  thumbs: Array<string>; // 商品缩率图
  updateTime: any;
  weight: number;
};

// 图库组
export type StickerGroup = {
  id: number;
  name: string;
  parentId: number;
  sort: number;
  sonList?: Array<StickerGroup>;
};

// 图库数据
export type StickerData = {
  disable: number;
  group_id: string;
  id: string;
  name: string;
  url: string;
};

//设计模板组
export type DesignTemplateGroup = {
  design_template_group_id: number;
  parent_id: number;
  sort: number;
  name: string;
  disable: number;
};

// 设计模版数据
export type DesignTemplateDate = {
  id: number;
  sort: number;
  designData: { [key: string]: any };
  thumb: string;
  name: string;
  disable: 0 | 1;
};

//模版数据
export type DesignData = {
  disable: number;
  goods_id: string;
  group_id: string;
  id: string;
  name: string;
  design_data: { [key: string]: any };
  thumb: string;
  back_thumb: string;
  color: `#${string} `;
  threadColor: `#${string} `;
};

//历史设计数据
export type DesignHistoryData = {
  id: number;
  date: number;
  designDataId: string;
  diffKey: Array<string>;
  designData: { [key: string]: Object };
  color: `#${string} `;
};

// 平铺类型              不平铺         基础平铺        镜像平铺           横向平铺              纵向平铺
export type RepeatType =
  | 'no_repeat'
  | 'base_repeat'
  | 'mirror_repeat'
  | 'horizontal_repeat'
  | 'vertical_repeat';

//图片文件夹
export type Folder = {
  id: number;
  name: string;
  count: number;
};

// 订单内的商品 数据
export type OrderGoods = {
  id: number; // '订单id',
  order_id: number; // '关联的订单id',
  print: 0 | 1; // 0是未打印,1是打印
  goods_name: string; // '商品名称',
  creat_date: string; // '创建时间',
  remark: string; // '备注信息',
  fillType: number; // 打印类型
  material_name: string; // 面料
  fabric_door_width: string; // 面料门幅
  design_data: { [key: string]: any }; // '设计数据',
  goods_id: string; // '商品id',
  thumb: string; // '缩略图',
  back_thumb: string; // '商品背面缩率图',
  user_id: string; // '用户id',
  size_number: { [key: string]: number }; // '尺码和对应的价格 {  S: 1,  L: 0 , M: 0  }',
  size_price: Array<{ size: string; price: number }>; // '尺码和对应的价格 [{ size:"S", price: 10 }]',
  price: number; // '单价',
  total_price: number; // '当前规则下的总价',
  project_file_print_number: number; // '生产文件的打印次数',
  color: `#${string} `; // '颜色  #ffffff',
  colors: Array<{ [key: string]: string } & { color: `#${string} ` }>; // 商品可选颜色
  after_sales_state?: string; // 退款状态 refund :售后中 refunded :退款完成 agree_refund:同意退款
  refund_remark?: string; //退款备注
  refund_amount?: number; // 退款金额
  refund_size_number?: { [key: string]: number }; // 退货的数量
  refund_express_number?: string; // 退货的运单号
};

// '订单状态               await_pay:待付款 paid:已付款  madeing:制作中  sending:已发货 sign:签收
export type OrderState = 'await_pay' | 'paid' | 'madeing' | 'sending' | 'sign';

// 未打印订单的搜索条件(后台管理系统使用)
export type DownloadSearchParam = Partial<{
  page: number;
  pageSize: number;
  supplier: string; // 供应商
  material_name: string; // 面料,
  material: string; // 面料材质,
  technology: string; //二次工艺名称,
  fabric_door_width: string; // 面料门幅,
  fillType: string; //'印刷方式, 0 满版印 1局部印',
}>;

// 制作中未打印订单的搜索的可选条件
export type DownloadSearchOptions = {
  supplier: Array<{ label: string; value: string; num: number }>; // 供应商
  material_name: Array<{ label: string; value: string; num: number }>; // 面料,
  material: Array<{ label: string; value: string; num: number }>; // 面料材质,
  technology: Array<{ label: string; value: string; num: number }>; //二次工艺名称,
  fabric_door_width: Array<{ label: string; value: string; num: number }>; // 面料门幅,
  fillType: Array<{ label: string; value: string; num: number }>; //'印刷方式, 0 满版印 1局部印'
};

// 订单数据
export type Order = {
  id: number; // '订单id',
  state: string; // '订单状态\r\nawait_pay:待付款 paid:已付款 madeing:制作中  sending:已发货 sign:签收  cancel:已经取消:',
  creat_date: string; // '创建时间',
  user_id: string; // '用户id',
  total_price: number; // '总价格',
  total_number: number; //商品总数量
  modify_total_price?: number; // 修改后的总价
  goods_total_price: number; // '商品总价格',
  express_name: '申通快递' | '顺丰快递' | '自提'; // '快递公司的名称',
  express_number: string; // '快递单号',
  express_bigWord: string; // '快递的大头字',
  express_packagePlace: string; // '快递的集散地',
  express_cost: number; // '运费',
  sender_name: string; // '发件人的名称',
  sender_mobile: string; // '发件人的电话',
  sender_country: string; // '发件人的国家',
  sender_province: string; // '发件人的省',
  sender_city: string; // '发件人的市',
  sender_area: string; // '发件人的区',
  sender_town: string; // '发件人的镇',
  sender_address: string; // '发件人的详细地址',
  receiver_name: string; // '收件人的名称',
  receiver_mobile: string; // '收件人的电话',
  receiver_country: string; // '收件人的国家',
  receiver_province: string; // '收件人的省',
  receiver_city: string; // '收件人的市',
  receiver_area: string; // '收件人的区',
  receiver_town: string; // '收件人的镇',
  receiver_address: string; // '收件人的详细地址',
  project_file_print_number: number; // 打纸文件下载次数
  express_print_number: number; // '快递面单的打印次数',
  order_from: string; // '订单来源 pc 电脑端, miniprogram',
  promoter: string; // '推广人的id',
  pickup_code: string; // '取件码',
  order_goods_ids: string; // '订单内的商品ids',
  goodss: Array<OrderGoods>; // 订单内的商品列表
};

// 购物车内的商品数据
export type ShopCarGoods = {
  id: string; // '购物车商品id',
  goods_name: string; // '商品名称',
  remark: string; // '备注信息',
  design_data: { [key: string]: number }; // '设计数据',
  goods_id: string; // '商品id',
  thumb: string; // '缩略图',
  back_thumb: string; // '商品背面缩率图',
  user_id: string; // '用户id',
  size_number: { [key: string]: number }; // '尺码和对应的数量 {  S: 1,  L: 0 , M: 0  }',
  size_price: Array<{ size: string; price: number }>; // '尺码和对应的价格 [{ size:"S", price: 10 }]',
  price: number; // '单价',
  total_price: number; // '当前规则下的单价',
  color: `#${string} `; // '颜色  #ffffff',
  modalSize: string; //商品的模型尺寸
  fillType: number; // 印刷方式 0,满版印刷, 1 局部印
  same_number: number; // 同款数量
  model_url: string; // 商品模型
  mockupUrls: Array<string>; // 商品的上身效果
  component: Array<{
    enable: boolean; // 是否上架
    lock: boolean; // 锁定
    icon: string; // 图标
    hover_icon: string; //鼠标移入的图标
    key: string;
    name: string;
    cameraPosition?: { x: number; y: number; z: number }; // 相机的观察位置
    print_area_top: number; // 限制打印区域上面
    print_area_left: number; // 限制打印区域左面
    print_area_width: number; // 限制打印区域宽度
    print_area_height: number; // 限制打印区域高度
    uv_3XS: string; // 3XS尺码轮廓
    uv_2XS: string; // 2XS尺码轮廓
    uv_XS: string; // XS尺码轮廓
    uv_S: string; // S尺码轮廓
    uv_M: string; // M尺码轮廓
    uv_L: string; // L尺码轮廓
    uv_XL: string; // XL尺码轮廓
    uv_2XL: string; // 2XL尺码轮廓
    uv_3XL: string; // 3XL尺码轮廓
    uv_4XL: string; // 4XL尺码轮廓
    uv_5XL: string; // 5XL尺码轮廓
    uv_6XL: string; // 6XL尺码轮廓
  }>; // 部位的数据 // 商品的组件数据
};

//收货地址数据
export type GoodsAddress = {
  id: string; // 'id',
  user_id: string; // '用户id',
  name: string; // '姓名',
  phone: string; // '电话',
  country: string; // '国家',
  province: string; // '省份',
  city: string; // '城市',
  district: number; // '区县',
  address: string; // '详细地址',
  provinceLabel: string; // '省份中文',
  cityLabel: string; // '城市中文',
  districtLabel: string; // '区县中文',
};

// 用户的数据格式
export type User = {
  user_id: string; // '用户id',
  user_name: string; // '用户名',
  email: string; // '用户的邮箱,  可以使用邮箱登录',
  user_checkCode: string; // '用户验证码',
  sessionId: string; // '记录当前用户是否多设备登录，唯一值',
  create_time: string; // '账号创建时间',
  disable: number; // '是否禁用，1是正常，0是禁用（删除）',
  job: string; // '职务',
  company: string; // '公司名称',
  phone: string; // '手机号码',
  avator: string; // '头像地址',
  is_root: number; // '是否是管理员(1是管理员,0是员工)',
  sex: string; // '性别',
  checkCodeCreateTime: string; // '创建验证码时间，用于判断是否过期',
  user_password: string; // '后台管理界面登录账号',
  disign_ids: string; // '我的设计的id',
  collect_sticker_ids: string; // '收藏的图库ids',
  collect_template_ids: string; // '收藏的模版ids',
  goods_address_ids: string; // '收货地址',
  order_ids: string; // '所有订单',
  image_folder_ids: string; // '用户图片组的ids',
  collect_goods_ids: string; // '收藏商品的ids',
  shop_car_ids: string; // '购物车内的商品ids',
  wx_openid: string; // '微信用户的 授权id',
  miniprogram_openid: string; // 微信小程序 授权的 openid
  role: number; // '角色;  0:管理员 1:设计师 2:普通用户',
  last_active_data: string; // 用户最后活动时间
};

//我的设计数据
export type MyDesign = {
  id: string; // '设计id',
  user_id: string; // '用户id',
  design_data: { [key: string]: any }; // '设计数据',
  goods_id: string; // '商品数据',
  thumb: string; // '正面缩率图',
  back_thumb: string; // '背面缩率图',
  name: string; // '设计名称',
  update_time: string; // '更新时间',
  sizeItem: string; // '模版的尺码',
  color: `#${string} `; // '设计数据的颜色 #ffffff',
  material_name: string; // 面料
  technology: string; // 工艺
};

//售后订单
export type AfterSalesOrderData = {
  id: string; // '购物车商品id',
  order_id: string; // '关联的订单id也是支付id',
  state: OrderState; // 订单状态
  order_goods_id: string; // '售后订单对应的订单商品id,也是退款id',
  refund_remark: string; // '备注信息',
  user_id: string; // '用户id',
  after_sales_state: string; // '售后订单状态  \r\nrefund :售后中\r\nrefunded :退款完成\r\nno_refund :拒绝退款\r\n',
  refund_amount: number; // '退款金额',
  refund_size_number: string; // '需要退还的货物',
  refund_express_number: string; // '寄回的物流单号',
  receiver_mobile: string; // 电话
  receiver_name: string; // 收件人
};

// 添加购物车
export type IPropAddShopCar = {
  goods_name: string; // '商品名称',
  design_data: { [key: string]: any };
  goods_id: string; // '商品id',
  thumb: string; // '封面',
  back_thumb: string; // '封面后',
  size_number: { [key: string]: number }; // '尺码和对应的价格 {  S: 1,  L: 0 , M: 0  }',
  color: string; // '选择的颜色',
};

//库存对象
export type InventoryItem = {
  inventory_id: number; // '库存id',
  goods_id: string; // '商品id',
  size: string; // '商品尺码',
  color: string; // '商品颜色',
  color_name: string; // '商品颜色中文',
  number: number; // '库存数量',
  goods_name: string; // '商品名称',
  goods_thumb: string; // '商品缩率图',
};

//统计数据
export type StatistData = {
  id: string;
  year: number; // 年
  month: number; // 月
  day: number; // 日
  new_order: number; // 新增订单
  pay_order: number; // 支付订单
  sales_volume: number; // 衣服总数
  income: number; // 总收入(不包括运费)
  new_design: number; // 新增设计
  active_user: number; // 活跃用户
};

// 全部配置
export type AllProperty = {
  color: Array<string>;
  material: Array<string>;
  materialName: Array<string>;
  printType: Array<{ name: string; value: string }>;
  sizes: Array<string>;
  suitFor: Array<{ name: string; value: number }>;
  supplier: Array<string>;
};


//用户上传的图片
export type MyPhotoData = {
  createTime: string;
  id: number;
  name: string;
  picPath: string;
  updateTime: string;
  userId: number;
};